/**
*  冒泡排序
*  算法思路：从数组第一个元素开始，相邻元素比较，前一个大于后一个，则交换两者位置，每对相邻元素都作比较，直至最后一对，最终在数组末尾的一定是最大的数，然后忽略最大的数，从数组第一个元素开始找第二大的数，以此类推，最后一次比较后，就得到了有序的数组 
*  算法时间复杂度：O(n2)
*  算法空间复杂度：O(1)  无论n如何变化，需要的临时存储变量就只有 i、j 
 */

export default function bubble(pararr) {
    if (!Array.isArray(pararr) || pararr.length < 2) {
        return;
    }
    let arr = [].concat(pararr);
    //相邻元素比较，最开始只需要比较 len-1 次
    for (let i = 0; i < arr.length - 1; i++) {
        for (let j = 0; j < arr.length - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                //交换值
                arr[j] = arr[j] + arr[j + 1];
                arr[j + 1] = arr[j] - arr[j + 1];
                arr[j] = arr[j] - arr[j + 1];
            }
        }
    }
    // console.log(`数组总长度：${arr.length}，冒泡排序总耗费次数：`);
    return arr;
}

